package com.zhangshuo.patternDesign.proxy;

import org.junit.Test;
import sun.misc.ProxyGenerator;

import java.io.File;
import java.io.FileOutputStream;
import java.io.IOException;

/**
 * Created by shuo.zhang on 2017-10-17.
 */
public class TextProxy {

    //逻辑过程，使用字节码的方式生成，如果需要可以生成到指定目录
    //生成的代理类是Proxy的子类，并实现指定的所有接口，生成一个InvocationHandler参数的构造器，将h代入上级
    //调用代理类的方法时，默认会使用h.invoke(this,method,args)；第二个参数，根据反射获取
    @Test
    public void generatorProxyClass(){

        byte[] classFile = ProxyGenerator.generateProxyClass("TestGenerator",new Class[]{Connection.class});

        try {
            FileOutputStream fos = new FileOutputStream(new File("F:/TestGenerator.class"));
            fos.write(classFile);
            fos.flush();
            fos.close();
        } catch (Exception e) {
            e.printStackTrace();
        }

    }
}
